Evolutionary Testing Supported by Slicing and Transformation
نویسندگان
چکیده
Evolutionary testing is a search based approach to the automated generation of systematic test data, in which the search is guided by the test data adequacy criterion. Two problems for evolutionary testing are the large size of the search space and structural impediments in the implementation of the program which inhibit the formulation of a suitable fitness function to guide the search. In this paper we claim that slicing can be used to narrow the search space and transformation can be applied to the problem of structural impediments. The talk will present examples of how these two techniques have been successfully employed to make evolutionary testing both more efficient and more effective. Evolutionary Testing Evolutionary Testing [6] uses metaheuristic search based techniques to find good quality test data. Test data quality is defined by a test adequacy criterion. The fitness function drives the search by rewarding candidate solutions which perform better according to the criterion. Slicing to Reduce Search Space Size Search algorithms are particularly sensitive to the size of the search space. The size of the search space is exponential in the number of input variables to the program, so methods which reduce this size may produce exponential speed ups in the search. Clearly not all predicates in all programs depend upon all inputs. Therefore, it makes sense to determine the input variables which may influence a given predicate before attempting to generate test data to cover it. This is essentially a question answered by dependence analyses such a slicing [2]. We use an approach based upon the algorithm of Danicic and Harman [1] which produces variable dependence information as a by product of slicing. We have built a tool which allows the test data generator to produce variable dependence information for predicates of interest to reduce search space size. Transformation to Overcome Structural Problems Generating test data using evolutionary test data generation has been shown to be successful, but its effectiveness is significantly reduced in the presence of programming features such as flags, unstructured control flow and side effects. In our work we seek transformations which simply make the programs easier to test. The transformations are therefore different to conventional transformations because they are only a means to an end not an end in themselves. Also, the transformations need not preserve traditional notions of equivalence, marking a radical departure from conventional approaches to transformation. We have experimented with flag removal [3] and plan to experiment with side effect removal [4] and restructuring transformations [5]. In the talk we present the initial results of our flag removal work which show that testability transformation has the potential to greatly improve test data generation ability.
منابع مشابه
Using Program Slicing Technique to Reduce the Cost of Software Testing
Systems of computers and their application in the lives of modern human beings are vastly expanding. In any kind of computer application, failure in computer systems can lead to a range of financial and mortal losses. Indeed, the major origin of software failure can be located in designing or implementing software. With regard to these statistics, 30% of the software projects have been prospero...
متن کاملA Review of Model Based Slicing
Software testing is important to reduce errors, maintenance and overall software costs. Testing the software is an activity whose aims to evaluate the feature or competency of system and determining that whether it meets required prospects. To comfort this one way is program slicing, this method is to break down the large programs into smaller ones and other is model based slicing that break do...
متن کاملUsing Program Slicing to Simplify Testing
Program slicing is a technique for automatically identifying the statements of a program which a ect a selected subset of its variables. A large program can be divided into a number of smaller programs (its slices), each constructed for di erent variable subsets. The slices are typically simpler than the original program, thereby simplifying the process of testing a property of the program whic...
متن کاملLightweight Semi-Dynamic Methods for EÆcient and E ective Program Slicing
When we try to debug a large program e ectively, it is very important to separate a suspicious program portion from the overall source program. Program slicing is a promising technique to extract a program portion; however, it remains diÆcult issues. Static slicing sometimes produces a large portion of the source program, especially for a program with arrays and pointers. Dynamic slicing requir...
متن کاملOptimization of sediment rating curve coefficients using evolutionary algorithms and unsupervised artificial neural network
Sediment rating curve (SRC) is a conventional and a common regression model in estimating suspended sediment load (SSL) of flow discharge. However, in most cases the data log-transformation in SRC models causing a bias which underestimates SSL prediction. In this study, using the daily stream flow and suspended sediment load data from Shalman hydrometric station on Shalmanroud River, Guilan Pro...
متن کامل